package com.example.keli.api;

import com.example.keli.api.http.api.BaseResponse;
import com.example.keli.ui.area.AreaVO;
import com.example.keli.ui.center.ActivieList;
import com.example.keli.ui.home.model.HomeBannerData;
import com.example.keli.ui.home.model.PaySucData;
import com.example.keli.ui.home.model.RecommendData;
import com.example.keli.ui.my.model.CommissionVO;
import com.example.keli.ui.my.model.Extract;
import com.example.keli.ui.my.model.GiftVO;
import com.example.keli.ui.my.model.InviteUserVO;
import com.example.keli.ui.my.model.LoveReciveBean;
import com.example.keli.ui.my.model.LoveSendBean;
import com.example.keli.ui.my.model.OrderVO;
import com.example.keli.ui.my.model.StarVO;
import com.example.keli.ui.my.model.UserInfo;
import com.example.keli.ui.my.model.VoteReceiveBean;
import com.example.keli.ui.my.model.VoteSendBean;
import com.example.keli.ui.register.LoginData;
import com.example.keli.ui.reward.RewardList;
import com.example.keli.ui.reward.RewardListVO;
import com.example.keli.ui.search.SearchVO;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;

public interface ApiService {

    //申请代理
    @GET("applyProxy")
    Observable<BaseResponse<Object>> applyProxy();

    @GET("getActivityRegion")
    Observable<BaseResponse<List<AreaVO>>> getActivityRegion();

    @FormUrlEncoded
    @POST("getActivity")
    Observable<BaseResponse<ActivieList>> getActivity(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("getReward")
    Observable<BaseResponse<RewardList>> getReward(@FieldMap Map<String, String> map);

    //获奖名单
    @FormUrlEncoded
    @POST("getAnnouncement")
    Observable<BaseResponse<RewardListVO>> getAnnouncement(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("getMyLike")
    Observable<BaseResponse<List<StarVO>>> getMyLike(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("getUser")
    Observable<BaseResponse<UserInfo>> getUser(@FieldMap Map<String, String> map);

    //获取活动详情
    @FormUrlEncoded
    @POST("getActivityInfo")
    Observable<BaseResponse<ActivieList.DataBean>> getActivityInfo(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("sendSms")
    Observable<BaseResponse<Object>> sendSms(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("login")
    Observable<BaseResponse<LoginData>> login(@FieldMap Map<String, String> map);

    //获取首页banner和视频
    @FormUrlEncoded
    @POST("getApp")
    Observable<BaseResponse<HomeBannerData>> getApp(@FieldMap Map<String, String> map);

    //获取首页热门列表
    @FormUrlEncoded
    @POST("getRecommend")
    Observable<BaseResponse<RecommendData>> getRecommend(@FieldMap Map<String, String> map);

    //根据活动获取列表
    @FormUrlEncoded
    @POST("getActivityUser")
    Observable<BaseResponse<RecommendData>> getActivityUser(@FieldMap Map<String, String> map);

    //获取我的信息
    @FormUrlEncoded
    @POST("my")
    Observable<BaseResponse<UserInfo>> getMyInfo(@FieldMap Map<String, String> map);

    //获取我的提成/收益
    @FormUrlEncoded
    @POST("getMyCommission")
    Observable<BaseResponse<List<CommissionVO>>> getMyCommission(@FieldMap Map<String, String> map);

//    @FormUrlEncoded
    @POST("getMyConvey")
    Observable<BaseResponse<List<InviteUserVO>>> getMyConvey();


    //心动  我送出的
    @FormUrlEncoded
    @POST("getMyLove")
    Observable<BaseResponse<LoveSendBean>> getMySendLove(@FieldMap Map<String, String> map);

    //心动  送给我的
    @FormUrlEncoded
    @POST("getMyLove")
    Observable<BaseResponse<LoveReciveBean>> getMyReciveLove(@FieldMap Map<String, String> map);

    //获取我的投票  收到
    @FormUrlEncoded
    @POST("getMyTicket")
    Observable<BaseResponse<VoteReceiveBean>> getMyReceiveTicket(@FieldMap Map<String, String> map);

    //获取我的投票  参与
    @FormUrlEncoded
    @POST("getMyTicket")
    Observable<BaseResponse<VoteSendBean>> getMySendTicket(@FieldMap Map<String, String> map);

    //提现
    @POST("dish")
    Observable<BaseResponse<Object>> dish();

    //赠送专属礼物
    @FormUrlEncoded
    @POST("setGift")
    Observable<BaseResponse<OrderVO>> setGift(@FieldMap Map<String, String> map);

    //赠送礼物/投票
    @FormUrlEncoded
    @POST("setTicket")
    Observable<BaseResponse<OrderVO>> setTicket(@FieldMap Map<String, String> map);

    @GET("getGift")
    Observable<BaseResponse<List<GiftVO>>> getGift();

    //搜索
    @FormUrlEncoded
    @POST("searchInfo")
    Observable<BaseResponse<List<SearchVO>>> searchInfo(@FieldMap Map<String, String> map);

    //查询送专属礼物状态以及获取微信号
    @FormUrlEncoded
    @POST("getGiftOrder")
    Observable<BaseResponse<PaySucData>> getGiftOrder(@FieldMap Map<String, String> map);

    //是否可提现
    @POST("extract")
    Observable<BaseResponse<Extract>> extract();

}
